# Python 内置函数
# abs()	divmod()	input()	open()	staticmethod()
# all()	enumerate()	int()	ord()	str()
# any()	eval()	isinstance()	pow()	sum()
# basestring()	execfile()	issubclass()	print()	super()
# bin()	file()	iter()	property()	tuple()
# bool()	filter()	len()	range()	type()
# bytearray()	float()	list()	raw_input()	unichr()
# callable()	format()	locals()	reduce()	unicode()
# chr()	frozenset()	long()	reload()	vars()
# classmethod()	getattr()	map()	repr()	xrange()
# cmp()	globals()	max()	reverse()	zip()
# compile()	hasattr()	memoryview()	round()	__import__()
# complex()	hash()	min()	set()
# delattr()	help()	next()	setattr()
# dict()	hex()	object()	slice()
# dir()	id()	oct()	sorted()	exec 内置表达式

# hasattr() 函数用于判断对象是否包含对应的属性。

class Coordinate:
    x = 10
    y = -5
    z = 0


point1 = Coordinate()
print(hasattr(point1, 'x'))
print(hasattr(point1, 'y'))
print(hasattr(point1, 'z'))
print(hasattr(point1, 'no'))  # 没有该属性

# bin() 返回一个整数 int 或者长整数 long int 的二进制表示。
print(bin(10))

# ord() 函数是 chr() 函数（对于8位的ASCII字符串）或 unichr() 函数（对于Unicode对象）的配对函数，
# 它以一个字符（长度为1的字符串）作为参数，返回对应的 ASCII 数值，
# 或者 Unicode 数值，如果所给的 Unicode 字符超出了你的 Python 定义范围，则会引发一个 TypeError 的异常。
print(ord("a"))


# super() 函数是用于调用父类(超类)的一个方法。
# super() 是用来解决多重继承问题的，直接用类名调用父类方法在使用单继承的时候没问题，
# 但是如果使用多继承，会涉及到查找顺序（MRO）、重复调用（钻石继承）等种种问题。
# MRO 就是类的方法解析顺序表, 其实也就是继承父类方法时的顺序表。

class A:
    def add(self, x):
        y = x + 1
        print(y)


class B(A):
    def add(self, x):
        super().add(x)


b = B()
b.add(2)  # 3


# type() 函数如果你只有第一个参数则返回对象的类型，三个参数返回新的类型对象。
print(type(1))
print(type({0:'zero'}))

# sorted() 函数对所有可迭代的对象进行排序操作。
print(sorted([5,7,6,3,4,1,2]))

# any() 函数用于判断给定的可迭代参数 iterable 是否全部为 False，则返回 False，如果有一个为 True，则返回 True。
# 元素除了是 0、空、FALSE 外都算 TRUE。
print(any(['a', 'b', 'c', 'd']))
print(any(['a', 'b', '', 'd']))
print(any([0, '', False]))
print(any((0, '', False)))
print(any([]))